package com.example.rice.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Service
public class OSSUploadServiceImpl {

    public  String uploadfile(MultipartFile multipartFile){
        // Endpoint以华东1（杭州）为例，其它Region请按实际情况填写。
        String endpoint = "oss-cn-chengdu.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        String accessKeyId = "LTAI5t7uMCHMEtZfwCBigp5E";
        String accessKeySecret = "PpS6XSJvuLRhXeTUAXdFNrI4Zeykfv";
        // 填写Bucket名称，例如examplebucket。
        String bucketName = "rice-dc";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {

            //2.获取文件上传的流
            InputStream inputStream = multipartFile.getInputStream();
            //3.构建日期目录
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String datepath = simpleDateFormat.format(new Date());

            //4.获取文件名
            String originname = multipartFile.getOriginalFilename();
            String filename = UUID.randomUUID().toString();
            String suffix = originname.substring(originname.lastIndexOf("."));
            String newName = filename + suffix;
            String fileUrl = datepath+"/"+newName;
            //5.文件上传到阿里云服务器
            ossClient.putObject(bucketName, fileUrl, inputStream);
            //6.返回访问地址
            return "https://"+bucketName+"."+endpoint+"/"+fileUrl;
        } catch (Exception oe) {
            oe.printStackTrace();
            return "fail";
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }


}
